|
モニタ(Monitor)は、リソース(何らかのハードウェア機器や変数群)を共有する複数のタスクの同期を実現する手法である。 Per Brinch Hansen が発明し、Concurrent Pascal 言語に最初に実装され、Solo Operating System でのプロセス間通信方式として使われた。 ==相互排他== モニタは以下のものから構成される: * 共有リソースを操作するプロシージャ群(モニタプロシージャ、モニタ関数) * ミューテックスロック * リソースと結び付けられた変数 * 競合状態を防ぐために仮定されるモニタ不変条件 モニタ・プロシージャは何かをする前にロックをかけ、処理が完了するか、ある条件を待つことになるまでそれをかけておく(条件については後述)。各プロシージャがロックを解放する際に不変条件が真であることを保証するなら、競合状態となるようなリソースの状態は各タスクからは見えないということになる。 単純な例として、銀行口座のトランザクションのためのモニタを考える。 monitor account この場合のモニタ不変条件は、簡単に言えば「新たな操作を行う際にそれ以前の全操作が balance に反映されていなければならない」ということになる。これはコード自身には書かれていないが、通常コメントに記載されるだろう。例えばEiffelのような言語は不変条件のチェックを取り入れており、ロックはコンパイラによって追加される。これはプログラマがロックとアンロックをいちいち書かなければならない言語よりも安全で信頼性が高い。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「モニタ (同期)」の詳細全文を読む スポンサード リンク
|